perm filename APP1[AIM,DBL] blob
sn#126871 filedate 1974-10-29 generic text, type T, neo UTF8
00100 .DEVICE XGP
00200 .FONT 1 "FIX25"
00300 .FONT 2 "SIGN57"
00400 .FONT 3 "SHD40"
00500 .FONT 4 "BDI25"
00600 .FONT 5 "NGB30"
00700 .FONT 6 "NGR20"
00800 .TURN ON "↓_π{"
00900 .TURN ON "⊗" FOR "%"
01000 .PAGE FRAME 53 HIGH 76 WIDE
01100 .MACRO B ⊂ BEGIN VERBATIM GROUP ⊃
01200 .MACRO E ⊂ APART END ⊃
01300 .TABBREAK
01400 .EVERY HEADING(⊗3BEINGS⊗*,,⊗4Doug Lenat⊗*)
00100 .EVERY FOOTING(⊗6Fourth Draft .... {DATE},page A1.{IF PAGE = 1 THEN 1 ELSE PAGE},BEING PARTS)
00200 .PORTION APPENDIX
00300 .COUNT PAGE PRINTING 1
00400 .NEXT PAGE
00500 ⊗2APPENDIX 1. ⊗* ⊗3BEING PARTS⊗*
00600
00700 ⊗4IDEN ⊗* How is this BEING referenced in English sentences?
00800 Implemented as productions, whose left sides may make arbitrarily
00900 complex examinations of the world (search for assertions and
01000 query BEINGs' parts). If the phrase is recognized,
01100 the right side may cause
01200 arbitrarily complex side effects before returning a value.
01300
01400 ⊗4ARGS ⊗* How many? Which are required and which are optional? What
01500 variables must remain local to this BEING? Which global variables
01600 are accessed by some part of this BEING?
01700
01800 ⊗4ARG-CHECK ⊗* Predicates which examine each argument for
01900 suitability. This could include whether defined, whether numerical,
02000 or something more complex
02100 (e.g., "is arg2 the name of a BEING whose
02200 DATA-STRUCTURE part requires it be initialized to a non-null value?")
02300
02400 ⊗4EVAL-ARGS ⊗* Is the program an NLAMBDA? Is the code it writes
02500 NLAMBDA? If so, which arguments (if any) should be evaluated upon
02600 entry?
02700
02800 ⊗4WHAT ⊗* A brief summary of the global purpose of the BEING. This
02900 is usually a template for an English sentence, more useful for
03000 communication with the user than with other BEINGs. The variables in
03100 this sentence could be instantiated by examining the world, by asking
03200 other BEINGs, by the BEING who called this one, etc.
03300
03400 ⊗4WHY ⊗* A justification for this BEING's existence; why it is
03500 called. The role of the caller to fill in pieces of WHY is much more
03600 important than with the WHAT part.
03700
03800 ⊗4HOW ⊗* A summary of the method(s) used by the BEING to do its
03900 thing. This is a summary of the global strageties this BEING will
04000 try, as contrasted to the more specific parts listed below. Again,
04100 this is more for the user's benefit than for other BEINGs'.
04200
04300 ⊗4EFFECTS ⊗* What will be true after calling this BEING?
04400 Post-conditions. These are broken into main and minor effects, and
04500 weighted as to certainty that they will occur. This part is
04600 implemented as productions: all the EFFECTS parts of all the BEINGS
04700 are merged into a large production system. This is then searched
04800 (pattern-invoked) when
04900 some BEING wants something to be true.
05000
05100 ⊗4WHEN ⊗* Factors and weights giving the BEING's temporal immediacy.
05200 This is computed as a sum of weighted factors.
05300 Although PUP6 should probably
05400 compare descriptions of "desire to be in control," rather than just
05500 numbers, this works sufficiently well for the present. Perhaps the
05600 weakness of perceptrons is important only if they are a major part of
05700 the program. In our case, each BEING has a set of triples here, each
05800 of which is a BEING call. They must EVALuate to, respectively, T/NIL,
05900 a weight (to be added in if T), and a sentence justifying this
06000 particular factor.
06100
06200 ⊗4META-CODE ⊗* The "body" of the code, but with uninstantiated
06300 subparts. This may contain goal statements, nondeterministic calls to
06400 other BEINGS, and
06500 uninstantiated pieces which fill themselves in by
06600 asking other parts of this BEING, its caller, or the user.
06700
06800 ⊗4COMMENTS ⊗* This is a BEING part, and should be distinguished from
06900 the English-like sentences which are scatterred throughout each part
07000 to aide comprehension. This part is simply a list of instructions
07100 for filling in undefined "slots" in other parts. Each member of
07200 COMMENTS is evalled, just prior to attempting the META:CODE part.
07300
07400 ⊗4REQUISITES ⊗* Suppose this BEING ⊗4is⊗* chosen to be in control.
07500 What must be satisfied just before (pre-) the BEING executes?
07600 just after (post-)and during (co-) execution? This is really three
07700 separate BEING parts. The satisfying is ⊗4active⊗*, in that if the
07800 conditions aren't true, other BEINGs will be called to try to make
07900 them true. (If ⊗4passive⊗*, the BEING would simply fail. The
08000 ARG-CHECK part is passive in this sense.)
08100
08200 ⊗4DEMONS ⊗* Which demons should be enabled during the BEING's
08300 execution? They remain active as long as this BEING activation exists
08400 in the control tree.
08500
08600 ⊗4AFFECTS ⊗* Which other BEINGs might be called by this BEING? Why?
08700 That is, which parts of this BEING want what to be done?
08800
08900 ⊗4COMPLEXITY ⊗* A vector describing such features as recursiveness,
09000 transparency to user, etc. Often the CHOOSE-FROM BEING will compare
09100 several BEINGs by a linear function on this vector. The actual
09200 components settled on were: how easy it is to call, its chance of
09300 calling* itself, its chance of succeeding, the effort in trying it,
09400 the efficiency of the code it will generate,
09500 and whether it must be inhibited absolutely at present. All these
09600 range over [0,1].
09700
09800 ⊗4SPECIALIZATIONS ⊗* How to write a more streamlined, special-case
09900 version of this BEING. What decisions must be made, and how do
10000 they simplify the parts of the new BEING?
10100
10200 ⊗4ALTERNATIVES ⊗* If this BEING fails, what are some equivalent
10300 BEINGs?
10400
10500 ⊗4GENERALIZATIONS ⊗* What are some general BEINGs, encompassing
10600 this one?
10700
10800 ⊗4PREDICATE ⊗* How many values does this BEING return? What is the
10900 type of each one (numeric, logical, etc.)? Are there side effects as
11000 well?
11100
11200 ⊗4DATA-STRUC ⊗* If it is one, what must be done to initialize,
11300 access, insert, and delete elements? What is the structure of a
11400 typical element?
11500
11600 ⊗4ENCODABLE ⊗* How to control writing a specialized new BEING: which
11700 other BEING parts must be called, and in what order.
11800
11900 ⊗4INHIBIT-CURRENT-DEMONS ⊗* A lock/unlock mechanism. When handling a
12000 demonic interrupt, we cannot permit the demon to interrupt us again.
12100
12200 ⊗4FORM-CHANGING ⊗*
12300 Does the entire form of some new BEING's part(s) have to be altered?
12400 If so, how?
12500
12600 Below is listed, for each BEING part, the number of BEINGS in PUP6
12700 which had this part specified for them. Since there were exactly one
12800 hundred BEINGS, these are also percentages. On the average, each
12900 part was used in 29.3% of all BEINGs. This is slightly unfair to PUP6,
13000 since the ⊗4absence⊗* of some BEING parts (e.g., NLAMBDA) conveys a
13100 nontrivial bit of information. Also present is the ⊗4use⊗* of each part.
13200
13300 .VERBATIM
13400
13500 54 IDEN Decide if this BEING gets control
13600 35 IMPLICIT:ARGS Initialize when this BEING gets control
13700 63 EXPLICIT:ARGS Bind when this BEING gets control
13800 81 EXPLICIT:ARGS:CHECK Evaluate when this BEING gets control
13900 4 NLAMBDA Evaluate when this BEING gets control
14000 3 NON:EVAL:ARGS Used when creating specialization of this BEING
14100 82 WHAT Instantiate and type out to user if requested
14200 77 HOW Instantiate and type out to user if requested
14300 72 WHY Instantiate and type out to user if requested
14400 27 MAIN:EFFECTS Decide if this BEING gets control
14500 2 MINOR:EFFECTS Decide if this BEING gets control
14600 19 WHEN Decide if this BEING gets control
14700 70 META:CODE Evaluate when this BEING gets control
14800 16 COMMENTS Evaluate when this BEING gets control
14900 6 PRE:REQUISITES Satisfy when this BEING gets control
15000 0 CO:REQUISITES Satisfy when this BEING gets control
15100 9 POST:REQUISITES Satisfy when this BEING gets control
15200 7 DEMONS Activate when this BEING gets control
15300 14 AFFECTS Decide if this BEING gets control
15400 92 COMPLEXITY:VECTOR Decide if this BEING gets control
15500 27 GENERALIZATIONS Decide what BEING to pass control to
15600 40 SPECIALIZATIONS Used when creating specialization of this BEING
15700 16 ALTERNATIVES Decide what BEING to pass control to
15800 15 PREDICATE Asked questions by other BEINGs' parts
15900 4 DATA:STRUCTURE Asked questions by other BEINGs' parts
16000 9 ENCODABLE Used when creating specialization of this BEING
16100 5 INHIBIT:CURRENT:DEMONS Eval. when this BEING gets control
16200 1 FORM:CHANGING Evaluate when this BEING gets control